/**
 * @file
 * @author  Tsin Smith <tsin.creator@gmail.com>
 *
 * @section DESCRIPTION
 *
 * A simple implementation of Main.
 *
 */

#ifndef __TSIN_SIMPLEMAIN_HPP__
#define __TSIN_SIMPLEMAIN_HPP__

#include <tsin/Main.hpp>

namespace tsin {

        class SimpleMain : public Main
        {
        public:
                /**
                 * Create a Main object. Actually does nothing.
                 */
                SimpleMain();

                /**
                 * Entry for the whole program.
                 *
                 * What this function does includes: \n
                 *   <1> Initializes an XMLConfiguration and store its reference to globals.\n
                 *   <2> Get the display manager specified by the configuration and initialize it.\n
                 *   <3> Get the menu style specified by the configuration.\n
                 *   <4> Ask for a Game from the menu.\n
                 *   <5> Get the engine specified in the Game's GameEnvironment.\n
                 *   <6> Let the engine handles all the remainings.\n
                 *
                 * @param arg Arg list
                 *        constructed from command line given arguments.
                 *
                 * @return Return value for the whole program.
                 */
                int main(Argument &arg);
        };

}

#endif /* __TSIN_SIMPLEMAIN_HPP__ */
